package edu.mit.mitmobile2.mit150;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
import edu.mit.mitmobile2.R;
import edu.mit.mitmobile2.about.Config;
public class MIT150VideoActivity extends Activity {
VideoView videoPlayer;
MediaController mediaCtrl;
@Override
protected void onPause() {
mediaCtrl.setEnabled(false);
finish();
super.onPause();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
final Context ctx = this;
final Uri video = Uri.parse("android.resource://" + Config.release_project_name +"/raw/hockfield_150");
videoPlayer = (VideoView) findViewById(R.id.videoView);
mediaCtrl = new MediaController(this);
mediaCtrl.setAnchorView(videoPlayer);
videoPlayer.setMediaController(mediaCtrl);
videoPlayer.setVideoURI(video);
videoPlayer.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// #1
int pos = mp.getCurrentPosition();
mp.reset();
try {
mp.setDataSource(ctx, video);
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mp.seekTo(pos);
// #2
//mp.release();
//finish();
return true; // false causes OnCompletion
}
});
videoPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mediaCtrl.setEnabled(false); // needed to avoid Froyo hang bug?
finish();
}
});
videoPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start(); // also need to wait before starting to avoid hanging bug...
}
});
// maybe needed to avoid hanging? (according to one forum post)
videoPlayer.setFocusable(false);
videoPlayer.setClickable(false);
}
}